/**********************************************************************************************
* 版    权：上海金智晟东电力科技有限公司南京分公司
* 项目名称：
* 产品名称：
* 创建日期：2023年03月16日
* 创 建 人：zzg
* 文 件 名：myiic.h
* 文件功能：
* 修 改 者：							日期：
* 备    注：
***********************************************************************************************/
#ifndef _MYIIC_H
#define _MYIIC_H
#include <stdio.h>

//#define INCLUDE_SOFT_IIC
#define IIC_SCL_PORT	LGPIO_PinSource9			// IIC总线SCL引脚
#define IIC_SDA_PORT	LGPIO_PinSource10			// IIC总线SDA引脚

#define IIC_SDA(n)		(n?GPIO_BIT_SET(LGPIO, IIC_SDA_PORT):GPIO_BIT_CLR(LGPIO, IIC_SDA_PORT))
#define IIC_SCL(n)		(n?GPIO_BIT_SET(LGPIO, IIC_SCL_PORT):GPIO_BIT_CLR(LGPIO, IIC_SCL_PORT))

#define SDA_OUT()		LGPIO_Output_Enable(LGPIO,IIC_SDA_PORT)
#define SDA_IN()		LGPIO_Input_Enable(LGPIO,IIC_SDA_PORT)
#define SDA_READ		LGPIO_ReadInputDataBit(LGPIO, IIC_SDA_PORT)




#define SOC_CLK					100000000				// (SystemCoreClock)
// #define I2C1_SPEED				(100000)
#define I2C1_SPEED				(50000)


void DelayUs(uint16_t nus);														//微秒延迟函数
void IicStart(void);															//IIC开始信号函数
void IicStop(void);																//IIC停止信号函数
uint8_t IicWaitAck(void);														//IIC等待应答校验函数
void IicAck(void);																//IIC产生ACK应答函数
void IicNack(void);																//IIC不产生ACK应答函数
void IicSendByte(uint8_t data);													//IIC发送单字节数据
uint8_t IicReadByte(uint8_t ack);												//IIC读取单字节数据
void IicSemInit(void);															//IIC信号量初始化
int8_t IicSendData(uint8_t *buf, uint8_t id, uint8_t addr, int32_t len);		//IIC发送数据函数
int8_t IicReceData(uint8_t *buf, uint8_t id, uint8_t addr, int32_t len);		//IIC接收数据函数


void IIC_config(void);																				// IIC配置初始化函数
void IIC_ByteWrite(uint8_t slave_addr, uint8_t write_addr, uint8_t* p_buffer);						// IIC发送单字节函数
void IIC_BuffWrite(uint8_t slave_addr, uint8_t write_addr, uint8_t* p_buffer, uint8_t len);			// IIC发送任意字节函数
void IIC_BuffRead(uint8_t slave_addr, uint8_t read_addr, uint8_t* p_buffer, uint8_t len);			// IIC读取任意字节函数


#endif
